home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ Users Group Library 1996 July
/
C-C++ Users Group Library July 1996.iso
/
listings
/
v_08_02
/
8n02029a
< prev
next >
Wrap
Text File
|
1990-02-28
|
2KB
|
101 lines
LISTING 3
#include <stdio.h>
#include <string.h>
#include <Mrm/MrmAppl.h>
void s_error();
void set_window_title();
void GPcallback();
extern void new_buffer();
extern void load_file();
extern void save_file();
extern void saveas_file();
extern void exit_editor();
extern void create_text_widget();
MrmHierarchy s_MrmHierarchy;
char *vec[] = {"editor.uid"};
MRMRegisterArg regvec[] = {
{"GPcallback", (caddr_t)GPcallback},
{"new_buffer", (caddr_t)new_buffer},
{"load_file", (caddr_t)load_file},
{"save_file", (caddr_t)save_file},
{"saveas_file", (caddr_t)saveas_file},
{"exit_editor", (caddr_t)exit_editor},
{"create_text_widget", (caddr_t)create_text_widget},
};
MrmCount regnum = sizeof(regvec) / sizeof(MRMRegisterArg);
#define MAX_TITLE_LEN 128
char wintitle[MAX_TITLE_LEN];
Widget toplevel;
void
main(argc, argv)
int argc;
char *argv[];
{
Widget editormain;
char *charptr;
MrmCode class;
MrmInitialize();
toplevel = XtInitialize("editor", "Editor", NULL, 0, &argc, argv);
if (MrmOpenHierarchy(1, vec, NULL, &s_MrmHierarchy) != MrmSUCCESS)
s_error("can't open hierarchy");
if (MrmRegisterNames(regvec, regnum) != MrmSUCCESS)
s_error("can't register names");
if (MrmFetchWidget(s_MrmHierarchy, "editor_main",
toplevel, &editormain, &class) != MrmSUCCESS)
s_error("can't fetch widget");
XtManageChild(editormain);
XtRealizeWidget(toplevel);
XFetchName(XtDisplay(toplevel), XtWindow(toplevel), &charptr);
strcpy(wintitle, charptr);
set_window_title("Untitled");
XtMainLoop();
}
void
GPcallback(w, client_data, call_data)
Widget w;
char * client_data;
caddr_t call_data;
{
Widget dialogs;
MrmCode class;
if (MrmFetchWidget(s_MrmHierarchy, client_data, toplevel,
&dialogs, &class) != MrmSUCCESS)
s_error("can't fetch widget in GPcallback\n");
XtManageChild(dialogs);
}
void
set_window_title(s)
char *s;
{
char newtitle[MAX_TITLE_LEN];
strcpy(newtitle, wintitle);
strcat(newtitle, " - ");
strcat(newtitle, s);
XStoreName(XtDisplay(toplevel), XtWindow(toplevel), newtitle);
}
void
s_error(s)
char *s;
{
printf("%s\n", s);
exit(1);
}